## API Report File for "@backstage/plugin-home"

> Do not edit this file. It is a report generated by [API Extractor](https://api-extractor.com/).

```ts
/// <reference types="react" />

import { ApiRef } from '@backstage/core-plugin-api';
import { BackstagePlugin } from '@backstage/core-plugin-api';
import { CardConfig as CardConfig_2 } from '@backstage/plugin-home-react';
import { CardExtensionProps as CardExtensionProps_2 } from '@backstage/plugin-home-react';
import { CardLayout as CardLayout_2 } from '@backstage/plugin-home-react';
import { CardSettings as CardSettings_2 } from '@backstage/plugin-home-react';
import { ComponentParts as ComponentParts_2 } from '@backstage/plugin-home-react';
import { ComponentRenderer as ComponentRenderer_2 } from '@backstage/plugin-home-react';
import { createCardExtension as createCardExtension_2 } from '@backstage/plugin-home-react';
import { EntityFilterQuery } from '@backstage/catalog-client';
import { ErrorApi } from '@backstage/core-plugin-api';
import { IdentityApi } from '@backstage/core-plugin-api';
import { JSX as JSX_2 } from 'react';
import { default as React_2 } from 'react';
import { ReactElement } from 'react';
import { ReactNode } from 'react';
import { RendererProps as RendererProps_2 } from '@backstage/plugin-home-react';
import { RouteRef } from '@backstage/core-plugin-api';
import { StorageApi } from '@backstage/core-plugin-api';

// @public
export type Breakpoint = 'xxs' | 'xs' | 'sm' | 'md' | 'lg' | 'xl';

// @public @deprecated (undocumented)
export type CardConfig = CardConfig_2;

// @public @deprecated (undocumented)
export type CardExtensionProps<T> = CardExtensionProps_2<T>;

// @public @deprecated (undocumented)
export type CardLayout = CardLayout_2;

// @public @deprecated (undocumented)
export type CardSettings = CardSettings_2;

// @public (undocumented)
export type ClockConfig = {
  label: string;
  timeZone: string;
};

// @public (undocumented)
export const ComponentAccordion: (props: {
  title?: string | undefined;
  expanded?: boolean | undefined;
  Content: () => JSX.Element;
  Actions?: (() => JSX.Element) | undefined;
  Settings?: (() => JSX.Element) | undefined;
  ContextProvider?: ((props: any) => JSX.Element) | undefined;
}) => JSX_2.Element;

// @public @deprecated (undocumented)
export type ComponentParts = ComponentParts_2;

// @public @deprecated (undocumented)
export type ComponentRenderer = ComponentRenderer_2;

// @public (undocumented)
export const ComponentTab: (props: {
  title: string;
  Content: () => JSX.Element;
  ContextProvider?: ((props: any) => JSX.Element) | undefined;
}) => JSX_2.Element;

// @public (undocumented)
export const ComponentTabs: (props: {
  title: string;
  tabs: {
    label: string;
    Component: () => JSX.Element;
  }[];
}) => JSX_2.Element;

// @public @deprecated (undocumented)
export const createCardExtension: typeof createCardExtension_2;

// @public
export const CustomHomepageGrid: (
  props: CustomHomepageGridProps,
) => React_2.JSX.Element;

// @public
export type CustomHomepageGridProps = {
  children?: ReactNode;
  config?: LayoutConfiguration[];
  rowHeight?: number;
  breakpoints?: Record<Breakpoint, number>;
  cols?: Record<Breakpoint, number>;
  containerPadding?: [number, number] | Record<Breakpoint, [number, number]>;
  containerMargin?: [number, number] | Record<Breakpoint, [number, number]>;
  maxRows?: number;
  style?: React_2.CSSProperties;
  compactType?: 'vertical' | 'horizontal' | null;
  allowOverlap?: boolean;
  preventCollision?: boolean;
};

// @public
export const FeaturedDocsCard: (
  props: CardExtensionProps_2<FeaturedDocsCardProps>,
) => JSX_2.Element;

// @public
export type FeaturedDocsCardProps = {
  filter: EntityFilterQuery;
  emptyState?: React_2.JSX.Element;
  linkDestination?: string;
  responseLimit?: number;
  subLinkText?: string;
};

// @public
export const HeaderWorldClock: (props: {
  clockConfigs: ClockConfig[];
  customTimeFormat?: Intl.DateTimeFormatOptions | undefined;
}) => JSX_2.Element | null;

// @public
export const HomePageCompanyLogo: (props: {
  logo?: ReactNode;
  className?: string | undefined;
}) => JSX_2.Element;

// @public (undocumented)
export const HomepageCompositionRoot: (props: {
  title?: string | undefined;
  children?: ReactNode;
}) => JSX_2.Element;

// @public (undocumented)
export const HomePageRandomJoke: (
  props: CardExtensionProps_2<{
    defaultCategory?: 'any' | 'programming' | undefined;
  }>,
) => JSX_2.Element;

// @public
export const HomePageRecentlyVisited: (
  props: CardExtensionProps_2<Partial<VisitedByTypeProps>>,
) => JSX_2.Element;

// @public
export const HomePageStarredEntities: (
  props: CardExtensionProps_2<Partial<StarredEntitiesProps>>,
) => JSX_2.Element;

// @public
export const HomePageToolkit: (
  props: CardExtensionProps_2<ToolkitContentProps>,
) => JSX_2.Element;

// @public
export const HomePageTopVisited: (
  props: CardExtensionProps_2<Partial<VisitedByTypeProps>>,
) => JSX_2.Element;

// @public (undocumented)
export const homePlugin: BackstagePlugin<
  {
    root: RouteRef<undefined>;
  },
  {}
>;

// @public
export const isOperator: (s: string) => s is Operators;

// @public
export type LayoutConfiguration = {
  component: ReactElement | string;
  x: number;
  y: number;
  width: number;
  height: number;
  movable?: boolean;
  deletable?: boolean;
  resizable?: boolean;
};

// @public
export type Operators = '<' | '<=' | '==' | '!=' | '>' | '>=' | 'contains';

// @public @deprecated (undocumented)
export type RendererProps = RendererProps_2;

// @public @deprecated (undocumented)
export const SettingsModal: (props: {
  open: boolean;
  close: Function;
  componentName?: string | undefined;
  children: JSX.Element;
}) => JSX_2.Element;

// @public
export type StarredEntitiesProps = {
  noStarredEntitiesMessage?: React_2.ReactNode | undefined;
  groupByKind?: boolean;
};

// @public (undocumented)
export const TemplateBackstageLogo: (props: {
  classes: {
    svg: string;
    path: string;
  };
}) => React_2.JSX.Element;

// @public (undocumented)
export const TemplateBackstageLogoIcon: () => React_2.JSX.Element;

// @public (undocumented)
export type Tool = {
  label: string;
  url: string;
  icon: React_2.ReactNode;
};

// @public
export type ToolkitContentProps = {
  tools: Tool[];
};

// @public
export type Visit = {
  id: string;
  name: string;
  pathname: string;
  hits: number;
  timestamp: number;
  entityRef?: string;
};

// @public (undocumented)
export type VisitedByTypeKind = 'recent' | 'top';

// @public (undocumented)
export type VisitedByTypeProps = {
  visits?: Array<Visit>;
  numVisitsOpen?: number;
  numVisitsTotal?: number;
  loading?: boolean;
  kind: VisitedByTypeKind;
};

// @public
export const VisitListener: ({
  children,
  toEntityRef,
  visitName,
}: {
  children?: React_2.ReactNode;
  toEntityRef?:
    | (({ pathname }: { pathname: string }) => string | undefined)
    | undefined;
  visitName?: (({ pathname }: { pathname: string }) => string) | undefined;
}) => JSX.Element;

// @public
export interface VisitsApi {
  list(queryParams?: VisitsApiQueryParams): Promise<Visit[]>;
  save(saveParams: VisitsApiSaveParams): Promise<Visit>;
}

// @public
export type VisitsApiQueryParams = {
  limit?: number;
  orderBy?: Array<{
    field: keyof Visit;
    direction: 'asc' | 'desc';
  }>;
  filterBy?: Array<{
    field: keyof Visit;
    operator: Operators;
    value: string | number;
  }>;
};

// @public (undocumented)
export const visitsApiRef: ApiRef<VisitsApi>;

// @public
export type VisitsApiSaveParams = {
  visit: Omit<Visit, 'id' | 'hits' | 'timestamp'>;
};

// @public
export class VisitsStorageApi implements VisitsApi {
  // (undocumented)
  static create(options: VisitsStorageApiOptions): VisitsStorageApi;
  list(queryParams?: VisitsApiQueryParams): Promise<Visit[]>;
  save(saveParams: VisitsApiSaveParams): Promise<Visit>;
}

// @public (undocumented)
export type VisitsStorageApiOptions = {
  limit?: number;
  storageApi: StorageApi;
  identityApi: IdentityApi;
};

// @public
export class VisitsWebStorageApi {
  // (undocumented)
  static create(options: VisitsWebStorageApiOptions): VisitsStorageApi;
}

// @public (undocumented)
export type VisitsWebStorageApiOptions = {
  limit?: number;
  identityApi: IdentityApi;
  errorApi: ErrorApi;
};

// @public
export const WelcomeTitle: ({
  language,
}: WelcomeTitleLanguageProps) => JSX_2.Element;

// @public (undocumented)
export type WelcomeTitleLanguageProps = {
  language?: string[];
};
```
